<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>错误对象</title>
</head>
<body>
  <script>
    // es2021标准中，为了配合新增的Promise.any()方法，详见《Promise 对象》一章），还引入一个新的错误对象AggregateError，也放在这一章介绍。
    // AggregateError 在一个错误对象里面，封装了多个错误。如果某个单一操作，同时引发了多个错误，，
    // 需要同时抛出这些错误，那么就可以抛出一个 AggregateError 错误对象，把各种错误都放在这个对象里面。
    // AggregateError 本身是一个构造函数，用来生成 AggregateError 实例对象。
    // AggregateError(errors[, message])
    var a = [1,2,3]
    /**
     * AggregateError()构造函数可以接受俩个参数。
     * --errors： 数组，它的每个成员都是一个错误。该参数是必须的。
     * --message: 字符串，表示AggregateError抛出时的提示信息，该参数是可选的。
    */
   var error = new AggregateError([
     new Error('ERROR_111112'),
     new TypeError('Fisrt name must be a string'),
     new RangeError('Transaction value must be at least 1'),
     new URIError('User profile link must be https')
   ], '哎呀！粗错了！')
  //  throw error
  /**
   * AggregateError的实例对象有三个属性。
   * --name: 错误名称，默认为“AggregateError”。
   * --message: 错误的提示信息。
   * --error: 数组，每个成员都是一个错误对象。
  */
  try {
  throw new AggregateError([
    new Error("some error"),
  ], 'Hello');
} catch (e) {
  console.log(e instanceof AggregateError); // true
  console.log(e.message);                   // "Hello"
  console.log(e.name);                      // "AggregateError"
  console.log(e.errors);                    // [ Error: "some error" ]
}
  </script>
</body>
</html>